<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let person = {
            name:'ArimaMisaki',
            age:19
        }

        // 1.get用于拦截对目标对象属性的访问，其中target为目标对象，key为访问属性
        // 下面的代码意为：创建了person的代理对象，该对象以person为目标，当外界调用.属性时，key为该属性
        let proxy = new Proxy(person,{get:(target,key)=>{
            // 如果不写return，那么相当于没有设置代理，默认返回undefined
            return 35
        }})
        console.log(proxy.name);

        // 2.我们可以拦截属性的访问
        let proxy1 = new Proxy(person,{get:(target,key)=>{
            if(key === 'name'){
                return "禁止访问该属性"
            }
        }})
        console.log(proxy1.name);

        // 3.set同理，用于拦截对目标对象属性的修改
        let proxy2 = new Proxy(person,{set:(target,key)=>{
            if(key === 'name'){
                return "禁止修改该属性"
            }
        }})
        proxy2.name = "傻蛋"
        console.log(proxy2.name);
    </script>
</body>
</html>